package org.lanqiao.ssm.common.core.utils;

import org.apache.commons.codec.binary.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;

/**
 * 
 * @Title: DecryptPropertyPlaceholderConfigurer.java
 * @Package org.lanqiao.ssm.common.core.utils
 * @Description: spirng 属性文件敏感字段加密类
 * @author 刘伟 15818570028@163.com
 * @date 2016年12月20日 上午9:15:24
 * @version V1.0
 */
public class DecryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
	/**
	 * 重写父类方法，解密指定属性名对应的属性值
	 */
	@Override
	protected String convertProperty(String propertyName, String propertyValue) {
		if (isEncryptPropertyVal(propertyName)) {
			logger.info(propertyValue);
			// 调用解密方法
			return new String(Base64.decodeBase64(propertyValue));
		} else {
			return propertyValue;
		}
	}

	/**
	 * 判断属性值是否需要解密，这里我约定需要解密的属性名用password结尾
	 * 
	 * @param propertyName
	 * @return
	 */
	private boolean isEncryptPropertyVal(String propertyName) {
		return propertyName.endsWith("password");
	}
	
}